c語言changelist,C語言常見編程題及答案40題

本文目錄一覽:

C語言中creatlist的用法

1、createlist不是庫函數,一般是數據結構中實現新建一個鏈表的自定義函數。因此沒有什麼用法好說的,關鍵是看自己怎麼定義。

2、常式:

NODE *creatlist(int a[])

{ NODE *h,*p,*q;int i;

h=(NODE *)malloc(sizeof(NODE));

h-next=NULL;

for(i=0;iN;i++)

{q=(NODE *)malloc(sizeof(NODE));

 q-data=a[i];

 q-next=NULL;

if(h-next==NULL) h-next=p=q;

else {p-next=q;p=q;}     }

return h;

 }

c語言 creatlist 自定義函數求理解

struct list *createlist(int data[], int n)

{

//輸入一個數組,n是數組的大小,返回一個內容相同的鏈表

struct list *head = 0, *p, *q;//head:鏈表頭

int i;

head = (struct list *) malloc(sizeof(struct list));//建立鏈表頭,分配空間

head-data = data[0];//往鏈表頭填入數據data[0]

p = q = head;//這些是循環變數,p先走,q跟著,倆人從鏈表頭一直走到鏈表尾

//每次循環,p和q一開始指向鏈表末尾的節點上。 p先走,malloc函數改變了他的值,他指向了一塊新的內存空間,就是新的節點;然後q-next=p把新連起來;然後 q跟上p的步伐,q=p,相當於二者又站在了末尾的節點上。

for(i=1; in; i++)

{

p = (struct list *) malloc(sizeof(struct list));//p變成一個新的節點,給p分配空間(注意p的值被改寫了,它不再是head,而是一個新的值,就是下一個節點)

p-data = data[i];//p裝入數據,第一次循環它裝入的是data[1],也就是緊跟著head的那個

q-next = p;//第一次循環q是head,以後每次都是q落後p一個格子。

//第一次循環相當於head-next=p,把第1個節點放在第0個節點後面。

q = p;

//第一次循環q=p,q追上p的腳步,離開head(第0

//第二次循環q=p,p又變成新的節點,相當於把第2個節點(p)放在第一個節點後面

}

p-next = NULL;//封鎖野指針

return head;

}

不懂歡迎追問

C語言鏈表的使用方法

下面的程序是單鏈表的建立與輸出,都有詳細的注釋,相信你能看的懂

但要想學習鏈表必須得掌握了一定的C語言基礎

下面這個鏈表的作用是建立5個結點的單鏈表,5個結點的值輸入以後,依次輸出各個結點的值

#includestdio.h

#includestdlib.h

//鏈表的建立與輸出

struct node//定義結點的類型

{

int num,score;

node*link;

};

void main()

{

node*creat(int n);//函數原型聲明

void print(node*h);//函數原型聲明

node*head=0;//定義鏈頭指針並初始化

head=creat(5);//調用creat函數創建鏈表

print(head);//調用print函數輸出鏈表

}

node*creat(int n)

{

node*h=0,*p,*q;

int i;

for(i=1;i=n;i++)

{

q=(node*)malloc(sizeof(node));//分配一個結點空間

scanf(“%d%d”,q-num,q-score);//輸入新結點的值

q-link=0;//新結點的指針域置0

if(h==0)

h=q;//第一個結點作為鏈頭結點

else

p-link=q;//新結點添加到鏈表的末尾

p=q;

}

return h;//返回鏈頭指針

}

void print(node*h)//鏈表輸出函數的定義

{

while(h)//當指針h非空時輸出h所指結點的值

{

printf(“num=%d\tscore=%d\n”,h-num,h-score);

h=h-link;//使h指向下一個結點

}

}

C語言編寫順序表。為什麼我的修改操作總是修改不了第一位,其他的均可正常運行,程序如下,幫幫忙哈

#include stdio.h

#define MaxSize 100

typedef struct MySequence{

char data[MaxSize];

int length;

} MySeq;

void menu()

{

printf(“本代碼實現順序表的如下幾個基本功能,請選擇對應的功能選項進行相應操作:\n”);

printf(“1.創建順序表\n”);

printf(“2.查找字元\n”);

printf(“3.刪除字元\n”);

printf(“4.插入字元\n”);

printf(“5.修改字元\n”);

printf(“6.顯示所有字元\n”);

printf(“0.退出程序\n”);

}

void SeqInit(MySeq* mys)

{

mys-length = 0;

}

int CreateSeq(MySeq* mys)

{

char c;

printf(“請依次輸入順序表的字元序列,結束請輸入’#’\n”);

while(1)

{

// fflush(stdin); //將這部分去掉,

scanf(“%c”,c);

if(c==’#’)

{

printf(“輸入結束!\n”);

return 0;

}

else if(mys-length==100)

{

printf(“順序表存儲空間已滿,不能繼續輸入。\n”);

return 1;

}

else

{

mys-data[mys-length]=c;

mys-length++;

}

}

return 2;

}

int CHangeList(MySeq* mys)

{

int i,j;

char x;

printf(“請輸入修改後的字元:\n”);

fflush(stdin);

scanf(“%c”,x);

printf(“請輸入要修改的位置:\n”);

fflush(stdin);

scanf(“%d”,i);

if (i0||imys-length) return 0;

else

{

for(j=0;jmys-length;j++)

if(j==i) // 這部分應該改成if(j==i)

{

mys-data[j]=x;

return j;

}

//else return 0; //這部分是最重要的錯誤,刪除。

}

}

int ShowAll(MySeq* mys)

{

int cur=0;

printf(“順序表中的數據依次為:”);

for(cur=0;curmys-length;cur++)

{

printf(“%c”,mys-data[cur]);

}

printf(“\n”);

return 0;

}

void main()

{

MySeq mys;

int choice = 0;

SeqInit(mys);//對順序表進行初始化//

menu();

printf(“本代碼實現順序表的幾個基本功能,請選擇對應的功能選項進行相應操作:”);

fflush(stdin);

scanf(“%d”,choice);

while(1)

{

switch(choice)

{

case 1:

{ if(mys.length!=0)

{

char c;

printf(“順序表已經初始化,再次初始化將清除原有數據。是否繼續 (y/n):”);

fflush(stdin);

scanf(“%c”,c);

while(1)

{

if(c==’y’)

{

mys.length = 0;

fflush(stdin); //每次初始化時,清除緩中取數據。是在函數CreaeSeq()外部、

CreateSeq(mys);

break;

}

else if(c==’n’)

{

break;

}

else

{

printf(“是否繼續 (y/n):”);

fflush(stdin);

scanf(“%c”,c);

}

}

break;

}

else

{

fflush(stdin); // 這兒也是如此

CreateSeq(mys);

break;

}}

case 5:

CHangeList(mys);

break;

case 6:

ShowAll(mys);

break;

case 0:

break;

default:

break;

}

menu();

printf(“本代碼實現順序表的幾個基本功能,請選擇對應的功能選項進行相應操作:”);

fflush(stdin);

scanf(“%d”,choice);

}

}

C語言編寫學生信息錄入 信息包括學號 姓名 性別 年齡 成績 能實現學生信息的插入 刪除 修改 查詢 儲存等操

# include “iostream”

# include “String.h”

using namespace std;

struct List

{

char name[20];

int NO;

};

template class List

struct Node

{

List data;

NodeList *next;

};

template class List

class Student

{

NodeList *head;

public:

Student(int m);

void Setdata(int n);

void PrintStudent();

int Get(char b[]);

void Delete(int i);

void Insert(int i,List item);

void Change(char a[],int num);

~Student();

};

template class List

StudentList::Student(int m)

{

NodeList *r,*s;

head = new NodeList;

r = head;

for (int i = 0;i m;i++)

{

s = new NodeList;

r-next = s;

r = s;

}

r-next = NULL;

}

template class List

void StudentList::Setdata(int n)

{

NodeList *p;

p = head-next;

for(int i = 0;i n;i++)

{

cout”請輸入姓名:”;

cinp-data.name;

cout”請輸入身份證號碼:”;

cinp-data.NO;

p = p-next;

}

}

template class List

void StudentList::PrintStudent()

{

NodeList *p;

p = head-next;

while (p)

{

coutp-data.name”,”p-data.NOendl;

p = p-next;

}

}

template class List

int StudentList::Get(char b[])

{

NodeList *p;

p = head-next;

while(p strcmp(p-data.name,b) != 0)

{

p = p-next;

}

return p-data.NO;

}

template class List

void StudentList::Delete(int i)

{

NodeList *p,*q;

p = head;

int j = 0;

while(p j i-1)

{

p = p-next;

j++;

}

if(!p || !p-next) {cerr”刪除位置非法”;exit(1);}

else

{

List x;

q = p-next;

x = q-data;

p-next = q-next;

delete q;

coutx.name”,”x.NOendl;

}

}

template class List

void StudentList::Insert(int i,List item)

{

NodeList *p,*s;

p = head;

int j = 0;

while (p j i-1)

{

p = p-next;

j++;

}

if(!p) {cerr”插入位置非法”;exit(1);}

else

{

s = new NodeList;

strcpy(s-data.name,item.name);

s-data.NO = item.NO;

s-next = p-next;

p-next = s;

}

}

template class List

void StudentList::Change(char a[],int num)

{

NodeList *p;

p = head-next;

while (p strcmp(p-data.name,a) != 0)

{

p = p-next;

}

p-data.NO = num;

}

template class List

StudentList::~Student()

{

NodeList *p,*q;

p = head;

while (p)

{

q = p;

p = p-next;

delete q;

}

head = NULL;

}

void main()

{

cout”請建立學籍系統”endl;

int m;

cout”請輸入總人數:”;

cinm;

StudentList stu(m);

int n = m;

stu.Setdata(n);

stu.PrintStudent();

int choice;

do

{

cout”********”endl;

cout”1.查詢”endl;

cout”2.刪除”endl;

cout”3.插入”endl;

cout”4.修改”endl;

cout”0.退出”endl;

cout”********”endl;

cout”請輸入您的選擇:”;

cinchoice;

switch(choice)

{

case 1:

{

char b[20];

cout”請輸入需查詢的姓名:”;

cinb;

cout”查詢人的學號為:”;

coutstu.Get(b)endl;

}break;

case 2:

{

int i;

cout”請輸入需刪除數據的位置:”;

cini;

cout”刪除的數據為:”;

stu.Delete(i);

}break;

case 3:

{

List item;

cout”請輸入需插入學生的姓名:”;

cinitem.name;

cout”請輸入需插入學生的學號:”;

cinitem.NO;

int i;

cout”請輸入需插入的位置:”;

cini;

stu.Insert(i,item);

stu.PrintStudent();

}break;

case 4:

{

char a[20];

cout”請輸入需修改人的姓名:”;

cina;

int num;

cout”請輸入修改的新學號:”;

cinnum;

stu.Change(a,num);

stu.PrintStudent();

}break;

case 0:

{

exit(1);

}break;

default:

{

cout”選擇項非法,請重新選擇”;

coutendl;

coutendl;

}

}

} while(choice);

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/162636.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-21 22:46
下一篇 2024-11-21 22:46

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 學堂雲Python語言程序設計答案

    學堂雲Python語言程序設計是一門重要的計算機專業課程。它涵蓋了Python語言及其應用,包括基礎語法、函數、文件處理、數據結構、圖形界面和網路編程等內容。在學習中,我們經常會需…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • 南京郵電大學Python慕課答案

    本文將詳細闡述南京郵電大學Python慕課答案,為大家提供學習Python課程的參考。 一、應用範圍 Python是一種高級通用編程語言,應用範圍廣泛,包括Web開發、數據分析與科…

    編程 2025-04-28

發表回復

登錄後才能評論