c語言實現的雙向連結串列插入程式,C語言實現的雙向連結串列插入程式

2022-02-12 04:58:11 字數 3760 閱讀 2419

1樓:

//雙向連結串列

#include

#include

typedef struct node

node;

node* create_list()

;int j;

node *head,*p1,*p2;

p2=head=(node *)malloc(sizeof(node));

head->i=a[0];

head->next=head->prior=null;

for(j=1;j<5;j++)

return head;

}node * insert_list(node *head,int i,int num)

q=(node *)malloc(sizeof(node));

q->i=num;

q->prior=p->prior;

q->next=p;

if(i==0)//插入結點作為表頭

else

p->prior=q;

return head;

}void printf_list(node *head)printf("\n");

}void main()

2樓:匿名使用者

建立函式和插入函式已全部重寫,並在必要的地方增加了註釋。 截圖是在vc++ 6.0環境下的執行結果。

#include

#include

typedef struct node s;

s *create_list() ,n = sizeof(a)/sizeof(a[0]);

s *p,*q,*head;

head = q = p = (s *)malloc(sizeof(s));

head->i = 0; // 0作為連結串列頭結點資料

p->next = q->prior = null;

while(--n >= 0) {

q = (s *)malloc(sizeof(s));

q->i = a[n];

p->next = q;

q->prior = p;

p = q;  // p下移到新結點

p->next = null;

return head;

void insert_list(s *head,int c) {

s *q,*p = head;

q = (s *)malloc(sizeof(s));

q->i = c;

while((p->next != null) && (p->next->i > c)) p = p->next;

if(p->next->i < c) { // 插在表中間

q->next = p->next;

p->next->prior = q;

q->prior = p;

p->next = q;

else if(p->next == null) {  // 插在尾部

p->next = q;

q->prior = p;

q->next = null;

// 如果表中已有元素同樣大小的i = c,則無息返回。

void printf_list(s *head) {

s *p = head;

int n = 0;

while(p->next != null) {

printf("%3d : %3d\n",n + 1,p->next->i);

p = p->next;

n++;

printf("\n");

main() {

struct node *head;

int c;

// clrscr();

head = create_list();

printf_list(head);

printf("請輸入插入的資料 : ");

scanf("%d",&c);

insert_list(head,c);

printf_list(head);

return 0;

使用c語言實現雙向連結串列的建立、刪除和插入

3樓:菲菲大愛

#include

#include

#include

struct list;

typedef struct list node;

typedef node *link;

link front=null,rear,ptr,head=null;

link push(int item)

else

return head;

} void makenull()

empty()

int tops()

void pop()

void display(link l)}

雙向連結串列的建立c++中如何編寫一個程式實現雙向連結串列的建立,插入和刪除

用c語言編寫一個程式,建立雙向迴圈連結串列,並實現它的插入操作、刪除操作

4樓:匿名使用者

typedef struct taglinknode linknode;

struct taglinknode;

linknode* g_plinklist = null;

// return 0, if failed, 1 succeedsint insertnode(int nindex)else

return(1);}//

int deletenode(int nindex)else

pnode = pnode->pnext;

if(pnode == g_plinklist)break;}}

return(0);}

5樓:

c的二叉樹即可實現,**自己搜,很多

關於c語言資料結構雙向連結串列插入節點的一點問題

6樓:it孤鶩

很簡單的雙向連結串列的插入問題

s->prior=p->prior; //就是s的前驅指標指向p的前面節點,節點地址就是p->prior

現在p的前面節點的後驅指標就是 p->prior->next 指向 s 就行

現在 s的前驅指標操作完成, 然後就是操作s的後驅指標了s的後驅指標就是s->next 指向 p

最後就是p的前驅指標 p->prior 指向 s節點就行,就完成插入了

c語言編寫雙向連結串列刪除

7樓:_葉子妞妞

原始核心**是有一些問題的。

修改如下:

#include

#include

typedef struct dubnodenode,*dublink;

void creat(dublink *l,int n)}void print(dublink l)printf("\n");

}void insert(dublink *l,int i,int e)

if(!p||j>i)

printf("error");

else

}void de(dublink *l,int i)if(!p||j>i)

printf("error");

else

}int main()

C語言,為什麼提交後答案錯誤,c語言實現這個,為啥我提交老是答案錯誤 ??哪裡有問題呢

應用程式發生異常 未知的軟體異常 1.病毒木馬造成的,在當今網際網路時代,專病毒坐著為了獲得更多的牟屬利,常用病毒綁架應用程式和系統檔案,然後某些安全防毒軟體把被病毒木馬感染的應用程式和系統檔案當病毒殺了導致的。2.應用程式元件丟失,應用程式完整的執行需要一些系統檔案或者某些ll檔案支援的,如果應用...

跪求c語言實現矩陣運算加減乘求逆

include include void jiafa printf 第一步變換後得到的增廣矩陣為 n for i 0 i0 printf 最後得到的增廣矩陣為 n for i 0 i for i 0 i for j 0 j c i j b i n j printf 故逆矩陣為 n for i 0 i...

C語言實現揹包問題,高手進來補填

include define m 30 short int bag m 1 bag1 m 1 float p m 1 total int w m 1 n void worth short intb m i void knopsack int ti,int i,short intb2 m 1 else...